# 获取验证码： http://localhost/index.php?m=Home&c=User&a=verify
# 登录 ： http://localhost/index.php?m=Home&c=User&a=do_login
# 导包
import json
import unittest
import requests

# 构造测试数据

# 创建测试类
from parameterized import parameterized
# 将datas/login.json中的数据读取出来
test_data = []
file = "../datas/login.json"
with open(file, encoding="utf-8") as f:
    json_data = json.load(f)
    for case_data in json_data:
        username = case_data.get("username")
        password = case_data.get("password")
        verify_code = case_data.get("verify_code")
        status_code = case_data.get("status_code")
        status = case_data.get("status")
        msg = case_data.get("msg")
        test_data.append((username, password, verify_code, status_code, status, msg))
print(test_data)

class testcase_Req_Login_Params(unittest.TestCase):
    # 测试类实例化开始方法,定义验证码接口setUp
    def setUp(self) :
        # 实例化session
        self.session = requests.session()
        # 定义验证码URL地址
        self.url_verify = "http://172.16.18.128/index.php?m=Home&c=User&a=verify"
        # 定义登录接口URL地址
        self.url_login = "http://172.16.18.128/index.php?m=Home&c=User&a=do_login"

    # 测试类结束方法teardown
    def tearDown(self) :
       self.session.close()

# 定义测试接口

# test01登录成功
    # 将装饰器@parameterized.expand()的参数设置，测试用例中方法传参需要使用到装饰器
    @parameterized.expand(test_data)
    def test01_loginSuccess(self,username,password,verify_code,status_code,status,msg):
        # 获取验证码
        response = self.session.get(url=self.url_verify)
        # username，password，verify_code，status_code，status，msg
        # 验证登录方法
        login_data = {
            "username": username,
            "password": password,
            "verify_code": verify_code
        }
        response = self.session.post(url=self.url_login,data=login_data)
        #测试用例
        print(response.json())
        self.assertEqual(status_code, response.status_code)
        self.assertEqual(status, response.json().get("status"))
        self.assertIn(msg, response.json().get("msg"))

# test02账号不存在


# test03密码错误
